perm filename FIG23.MF[TR,DEK] blob sn#800724 filedate 1985-10-08 generic text, type T, neo UTF8
% Special setup to make Figure 23. (To do it, alias to [cm,dek], and
% put lowercase `a' on the TEST.MF file.)
% (Larger characters overflow MF's memory; this one just fits!)

% This tries all characters on TEST.MF using six different sets of parameters
if unknown cmbase: input cmbase fi % omit if CMMF can be assumed
mag=.5;
% use the following lines to get rid of DD nonsquareness
% aspect_ratio_[proof]:=4/3; % WAITS only!
% aspect_ratio_[smoke]:=4/3; % WAITS only!
% mag:=3/8; % WAITS only!
mode_setup; let mode_setup=\;

boolean running;
def abort = hide(scrollmode; running:=false) enddef;
def pause=stop "done with char "&decimal charcode&". " enddef;
let iff=always_iff;
def ligtable text t=enddef;
def charlist text t=enddef;
def extensible text t=enddef;

string currenttitle;
let semi=;; let echar=endchar; let endchar=enddef;
def cmchar expr s = currenttitle:=s;
 let;=testchar semi quote def chartext=enddef;
def testchar = semi let;=semi;
 % now `chartext echar' will generate the character to be tested
 running:=true; errorstopmode; currentscreen:=nullpicture;
 for k=1 upto 6: showstats;
  if running: if known params[k]: scantokens params[k]; font_setup;
    currentwindow:=k;
    currenttitle & ", " & fontname[k];
    chartext echar; fi fi endfor
shipout currentscreen;
 pause; enddef;

string params[],fontname[];
params[1]="roman_params"; fontname[1]="cmr10";
params[2]="sans_params"; fontname[2]="cmsx10";
params[4]="tt_params"; fontname[4]="cmtt10";
params[5]="bold_params"; fontname[5]="cmb10";
params[6]="quote_params"; fontname[6]="cmssqi8";
params[3]="ital_params"; fontname[3]="cmti10";

w_rows=floor 1/2 screen_rows; w_cols=floor 1/3 screen_cols;
pair windowshift[];
picture currentscreen;
def open(expr k,i,j)=
% openwindow k from (0,0) to (0,0) at (0,0);
 windowshift[k]:=(-40+(j-1)*w_cols,160-(i-1)*w_rows);
 enddef;
def openit =
 openwindow 0 from (0,0) to (500,500) at (-50,300);
 open(1,1,1); open(2,1,2); open(3,1,3);
 open(4,2,1); open(5,2,2); open(6,2,3); enddef;
let DISPLAY=display;
def display text t = addto currentscreen also currentpicture
 shifted windowshift[currentwindow]; DISPLAY currentscreen inwindow 0 enddef;

begingroup delimiters begintext generate;
 def WAITSkludge expr s =
  if length s > 6: substring (0,3) of s &
   substring(length s-3,infinity) of fi s enddef;
 numeric Xerox_world; % again, this is WAITS only
 def makedef(expr s)(text t) =
  expandafter def scantokens s = t enddef; flushtext enddef;
 def flushtext suffix t = enddef;
 for k=1 upto 6: if known params[k]:
 makedef(params[k])
  expandafter expandafter expandafter begintext
  scantokens ("input "&WAITSkludge fontname[k]); fi endfor
endgroup;

def proofrule(expr a,b) = enddef;
def shipit = enddef;
proofing:=0;

input test
end